import HttpClient from "@/utils/request.js";
import { SendRegisterCode, Register, UserInfo, HasTel } from "@/interfaces/user.js";
const http = new HttpClient({
    baseURL: 'https://new.uhx.io/user', // 代理地址
    timeout: 50000,
});

/**
 * 发送注册验证码
 * @param params - 发送注册验证码的参数对象
 * @returns 返回HTTP POST请求的Promise结果
 */
export const sendRegisterCode = (params: SendRegisterCode) => {
    return http.post('/login/sendRegisterCode', { params, });
}

/**
 * 用户注册函数
 * @param params - 注册参数对象，类型为Register
 * @returns 
 */
export const register = (params: Register) => {
    return http.post('/login/register2', { params });
}


/**
 * 发送登录验证码的函数
 * @param params - 发送注册验证码的参数对象
 * @returns 返回一个HTTP POST请求的Promise
 */
export const sendLoginCode = (params: SendRegisterCode) => {
    return http.post('/login/sendLoginCode', { params });
}

/**
 * 发送登录验证码的密码验证函数
 * @param params - 包含注册验证码信息的参数对象
 * @returns 返回HTTP POST请求的结果，用于验证用户密码
 */
export const passwordLogin = (params: Register) => {
    return http.post<UserInfo>('/login/password2', { params });
}



/**
 * 检查用户是否已注册手机号的函数
 * @param params - 注册参数，包含用户注册信息
 * @returns 返回一个Promise，解析为UserInfo类型的对象
 */
export const hasTel = () => {
    return http.post<HasTel>('/user/hasTel', {});
}


/**
 * 获取Google密钥的函数
 * 该函数向服务器发送请求以获取用户的Google密钥信息
 * @returns 返回一个Promise，解析为UserInfo类型的对象
 */
export const getGoogleKey = () => {
    return http.get<string>('/user/getGoogleKey', {});
}

/**
 * 绑定Google账号的函数
 * 该函数发送一个GET请求到服务器以绑定Google账号
 * @returns 返回一个Promise，解析为服务器返回的字符串数据
 */
export const bindGoogle = (params: { key: string, code: string }) => {
    return http.post<string>('/user/bindGoogle', { params, showMsg: true });
}




/**
 * 发送绑定手机号的验证码
 * @param params - 包含手机号和国际区号的参数对象
 * @returns 返回一个Promise，解析为HTTP响应结果
 */
export const sendBingPhoneCode = (params: { tel: string, internationalCode: string }) => {
    return http.post<string>('/user/sendBingPhoneCode', { params });
}


export const bingTel = (params: { tel: string, internationalCode: string, code: string }) => {
    return http.post<string>('/user/bingTel', { params });
}


export const updatePassword = (params: { oldPassword: string, password: string }) => {
    return http.get<string>('/user/updatePassword', { params });
}

